﻿#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>

using namespace std;

int maxTurbulenceSize(vector<int>& arr) 
{
	int n = arr.size();
	int ans = 1;					// 最⻓湍流数组的⻓度

	// 状态显示 + 初始化
	vector<int> f(n + 1, 1);		// 以 i 为结尾，最后呈现「上升状态」下的最⻓湍流数组的⻓度
	vector<int> g(n + 1, 1);		// 以 i 为结尾，最后呈现「下降状态」下的最⻓湍流数组的⻓度

	// 填表（从左到右，两个表一起填）
	for (int i = 1; i < n; i++)
	{
		if (arr[i - 1] < arr[i])
		{
			f[i] = g[i - 1] + 1;
		}
		else if (arr[i - 1] > arr[i])
		{
			g[i] = f[i - 1] + 1;
		}
		ans = max(ans, max(f[i], g[i]));
	}
	return ans;
}
int main()
{
	vector<int> v;
	
	v.push_back(9);
	v.push_back(4); 
	v.push_back(2);
	v.push_back(10);
	v.push_back(7);
	v.push_back(8);
	v.push_back(8);
	v.push_back(1);
	v.push_back(9);
	cout << maxTurbulenceSize(v) << endl;


	return 0;
}
